#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define kMaxSize 1001
typedef char TElemSet[kMaxSize];
typedef struct KaryTreeNode *Trie;
struct KaryTreeNode {
    TElemSet data; /* 数据元素 */
    Trie *child; /* 孩子指针数组 */
};

typedef enum {false, true} bool;

void InsertChild(Trie node_ptr, int index, Trie child_ptr) {
    /* 将child_ptr插入为node_ptr的第index个孩子 */
    node_ptr->child[index] = child_ptr;
}

Trie CreateTrieNode(int k) {
    Trie node_ptr;
    int i;

    /* 创建k叉树结点 */
    node_ptr = (Trie)malloc(sizeof(struct KaryTreeNode));
    node_ptr->child = (Trie *)malloc(sizeof(Trie) * k);
    node_ptr->data[0] = '\0';
    for (i = 0; i < k; i++) {
        InsertChild(node_ptr, i, NULL); /* 新结点的所有分支设为空树 */
    }
    return node_ptr;
}

Trie Insert(Trie trie, int k, char s[]) {
    Trie node_ptr, child_ptr;
    int n, i, index;

    if (trie == NULL) { /* 空树 */
        trie = CreateTrieNode(k); /* 创建前缀树根结点 */
    }
    node_ptr = trie;
    n = strlen(s); /* 字符串s的长度n */
    for (i = 0; i < n; i++) {
        index = s[i] -
                'a'; /* 字符s[i]对应的分支编号。假设s仅由小写英文字母组成 */
        child_ptr = node_ptr->child[index]; /* 找到结点的第index个分支 */
        if (child_ptr == NULL) { /* 若第index个分支是空树 */
            child_ptr = CreateTrieNode(k); /* 创建k叉Trie结点 */
            InsertChild(node_ptr, index,
                        child_ptr); /* 新结点设为node_ptr的第index个孩子 */
        } /* 结点创建完毕 */
        node_ptr = child_ptr; /* 移到第index个子结点 */
    }
    strcpy(node_ptr->data, s);
    return trie;
}

bool IsIn(Trie trie, int k, char s[]) {
    Trie node_ptr;
    int n, i, index;
    bool found;

    node_ptr = trie;
    n = strlen(s);
    found = true;
    i = 0;
    while (node_ptr != NULL && i < n) {
        index = s[i] -
                'a'; /* 字符s[i]对应的分支编号。假设s仅由小写英文字母组成 */
        node_ptr = node_ptr->child[index]; /* 下移至结点的第index个分支 */
        i++;
    }
    if (node_ptr == NULL || node_ptr->data[0] == '\0') { /* 查找失败 */
        found = false;
    }
    return found;
}

/* 算法5-24：构建后缀树BuildSuffixTree(s, k) */
Trie BuildSuffixTree(char s[], int k) {
    Trie suffix_trie;
    int n, i;
    char *sub_s;

    suffix_trie = NULL; /* 后缀树的初始化 */
    n = strlen(s);
    for (i = 0; i < n; i++) {
        sub_s = s + i; /* 提取后缀s[i...n-1] */
        suffix_trie = Insert(suffix_trie, k,
                             sub_s); /* 将后缀sub_s插入suffix_trie树 */
    }
    return suffix_trie;
}
/* 算法5-24 结束 */

int main(void) {
    Trie suffix_trie;
    TElemSet s;
    int n, i;

    scanf("%s\n", s);
    suffix_trie = BuildSuffixTree(s, 26);
    scanf("%d\n", &n);
    for (i = 0; i < n; i++) {
        scanf("%s\n", s);
        if (IsIn(suffix_trie, 26, s) == true) {
            printf("yes\n");
        } else {
            printf("no\n");
        }
    }

    return 0;
}